#ifndef __FILE_TRANSFER__
#define __FILE_TRANSFER__

#include <sys/socket.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include "head.h"

// 全局变量，判断是否大文件
const int big_file_size = 100 * 1024 * 1024;

// TLV 协议实现
typedef struct train_s
{
    int length;      // 传输长度
    char data[1000]; // 传输内容 1000B上限
} train_t;

// 手动实现 MSG_WAITALL
int recvn(int sockfd, void *buf, int n); 

// 请求上传
int upload(int sockfd, const char *file_path); // file_path 为 client 上传文件的路径
// 上传请求处理
int uploadHandle(int sockfd);                  // 保存在 server 当前目录

// 请求下载
int download(int sockfd, const char *filename); // 下载 server 当前目录下的 filename 文件
// 下载请求处理
int downloadHandle(int sockfd);                 // 传输 server 当前目录被请求的文件

#endif
